// 前两项固定都是1，[1,1,2,3,5,8,13,21...]
// fn(0) => 1
// fn(5) => 5

// 实现1，求出第n项及其前面各项的值，然后返回第n项，通俗易懂
function fabonaqi1(n){
    if(n <=1 ){
        return 1
    }
    let arr =[1,1]
    let loopTime = n - 1 // 比如要拿到 n=2的，也就是arr里面得有index=2的，现在已经有两项了，只要再循环推进去1项就可以了
    while(loopTime > 0){
        let l = arr.length
        let a = arr[l -1]
        let b = arr[l -2]
        arr.push(a + b)
        loopTime--
    }
    return arr[arr.length -1]
}

console.log(fabonaqi1(4))

// 实现2
function fabonaqi2(n){
   function fn(step, cur = 1,next = 1){
       if(step === 0){
           return cur
       }
       return fn(step - 1, next, cur + next )
   }
   return fn(n)
}
console.log(fabonaqi2(4))